HTTP,超文本傳輸協定(HyperText Transfer Protocol),是一個Client端(使用者)和伺服器端(網站)之間請求和應答的標準。
使用URL要求 Web Page 的物件位址
流程:
(1)Server 開一個 TCP Port 80
(2)由HTTP Client端建立Socket 與遠方的 Server指定埠(預設是80埠)進行TCP連線。
(3)Client端發出要資料的請求(request(containing URL)),HTTP伺服器則在那個埠監聽Client端的請求。一旦收到請求,伺服器會向Client端回覆(response)並返回一個狀態,比如"HTTP/1.1 200 OK",以及返回的內容,如請求的Web Page 裡面的檔案、錯誤訊息、或者其它訊息,之後在Client 的瀏覽器裡做美化與呈現。
(4)交換完資料,TCP 連線 closed
/*口訣:連,傳,關/
=> Socket 是資源共享的,不會一直占用,因此會有 Set up 階段 與 釋放階段。
就是Server 不用記得以前服務過誰。舉一個簡單的情境:透過 HTTP 請求成功登入服務後,想使用服務。無狀態的特性會讓服務器無法知道「使用服務的請求」跟「剛剛已成功登入服務的請求」是同一個使用者,也因此無狀態在身分驗證上會出現較多問題。
如果是狀態化(state)就會比較複雜:例如收信與送信的app,他可能有帳密登入,記得你已經讀過的信等,比較複雜。
at most one object
sent over a single TCP
connection
在HTTP1.0的時候使用多次連線(Non Persistent),TCP連線在每一次請求/回應對之後會關閉,就一直開開關關(有10個Object就重新連線10次)。
如圖:
multiple objects can
be sent over single
TCP connection
between client, server
現在使用的HTTP1.1使用 持續連線(Persistent),一個連接可以重複在多個請求/回應使用,大大減少等待時間。
如圖:
一來一往經過的時間
time for a
small packet to travel from
client to server and back
Non Persistent 每次傳一個物件都要兩個RTT(1.要求Set up 與 2.資料往返)
參見:
超文本傳輸協議(HTTP)是什麼?
簡介 HTTP 協定
wikipedia HTTP